package pe.com.bbva.encriptacion;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;



public class UtilFile {
	
    public static void crearArchivoEncripta(String rutaLectura, String rutaArchivoEncriptar, String clave) {
    	//"D:\\1-MASIVAS-26092013.txt";
        //"C:\\mnt\compartido\targps\load";
        try {
            FileReader inputFile = new FileReader(rutaLectura);//rutaLectura
            BufferedReader bufferReader = new BufferedReader(inputFile);
            StringBuilder builder = new StringBuilder();
            String line;
            int i=0;
            while ((line = bufferReader.readLine()) != null) {
                //builder.append(BlowFish.encriptar(line, clave));
                if(i==0){
                    builder.append(BlowFish.encriptar(line, clave));
                    i++;
                }else{
                    builder.append("\n");
                    builder.append(BlowFish.encriptar(line, clave));
                }
            }
            bufferReader.close();
            crearArchivo(builder.toString(),rutaArchivoEncriptar );//rutaArchivoEncriptar
        } catch (Exception e) {
            System.out.println("Error in reading file:" + e.getMessage());
        }
    }
    
    public static void crearArchivoDesencriptado(String rutaLectura, String rutaArchivoDesencriptado, String clave) {
        try {
            List<String> texto=new ArrayList<String>();
            FileReader inputFile = new FileReader(rutaLectura);//rutaLectura
            BufferedReader bufferReader = new BufferedReader(inputFile);
            StringBuilder builder = new StringBuilder();
            String line;
            while ((line = bufferReader.readLine()) != null) {
                if(line.startsWith("\n")){
                    texto.add(builder.toString());
                    builder = new StringBuilder();
   
                    int tamano = line.length();
                    builder.append(line.substring(7, tamano)+"\n");
                    texto.add(line.substring(7, tamano)+"\n");
                }else{
                    builder.append(line+"\n");
                    texto.add(line+"\n");
                }
                
                //texto.add(BlowFish.desEncriptar(line, clave));
            }
            bufferReader.close();
            crearArchivo(texto,rutaArchivoDesencriptado,clave );
            
        } catch (Exception e) {
            System.out.println("Error in reading file:" + e.getMessage());
        }
    }
    
    public static void crearArchivo(String texto, String ruta){
        FileWriter fichero = null;
        PrintWriter pw = null;
        try
        {   
            fichero = new FileWriter(ruta);
            pw = new PrintWriter(fichero);
            pw.println(texto);
           
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
           try {
           if (null != fichero)
              fichero.close();
           } catch (Exception e2) {
              e2.printStackTrace();
           }
        }
    }
    
    public static void crearArchivo(List<String> texto, String ruta, String clave){
        FileWriter fichero = null;
        PrintWriter pw = null;
        try
        {
            fichero = new FileWriter(ruta);
            pw = new PrintWriter(fichero);
            for(String t : texto){
                pw.println(BlowFish.desEncriptar(t, clave));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
           try {
           if (null != fichero)
              fichero.close();
           } catch (Exception e2) {
              e2.printStackTrace();
           }
        }
    }

}
